package com.tarena.rabbitmq.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 在当前项目中 声明连接rabbitmq所需的组件和绑定关系
 */
@Configuration
public class RabbitComponentDeclareConfig {
    private static  final  String QUQUE01="boot-queue";
    private static  final  String EXCHANGE01="boot-exchange";
    //声明一个 队列
    @Bean
    public Queue declareQueue(){
        //可以通过2中方式 创建队列bean对象
        //new Queue("queue_demo_01"); 持久化 是否自动删除 map参数
        //new Queue(QUQUE01,false,false,false,null);
        //也可以使用构建器
        return QueueBuilder.nonDurable(QUQUE01).build();
    }
    //声明一个 topic交换机
    @Bean
    public TopicExchange declareTopicExchange(){
        //两种建立方式
        //new TopicExchange
        //new TopicExchange(EXCHANGE01,false,false,null);
        return ExchangeBuilder.topicExchange(EXCHANGE01).build();
    }
    //队列和交换机绑定
    @Bean
    public Binding declareBinding(){
        //两种建立方式
        //new Binding()
        //new Binding(QUQUE01,Binding.DestinationType.QUEUE,EXCHANGE01,"boot.#",null)
        return BindingBuilder.bind(declareQueue()).to(declareTopicExchange())
                .with("中国.#");
    }
}
